// 保存（添加和修改）cookie
//  功能：把一个数据保存多长时间，保存的数据谁可以使用。
// 参数：
//   键：
//   值：
//   时长：(单位是天)
//   可访问的路径：
//   可访问的域名
// 返回值：无

function saveCookie(key, value, daycount, path = "/", domain) {
  let d = new Date();
  d.setDate(d.getDate() + daycount);

  // 把数据保存到cookie中。
  let str = `${key}=${encodeURIComponent(
    value
  )};expires=${d.toGMTString()};path=${path}`;
  if (domain) {
    str += `;domain=${domain}`;
  }

  document.cookie = str;
}

// 获取cookie
// 功能：获取指定键对应的值。
// 参数：（已知条件）
//   键：
// 返回值：（结果）
//   值：如果没有读取到，那么，返回null。
function getCookie(key) {
  let str = decodeURIComponent(document.cookie); // "username=lyf; token=hi"

  // 1、转成数组（用 分号和空格作为分隔符）；
  let arr = str.split("; "); //["username=lyf","token=hi"]

  // 2、在数组中查找键对应的值。
  let resultArr = arr.filter((item) => item.indexOf(key + "=") == 0);

  if (resultArr.length == 1) {
    var [, result] = resultArr[0].split("=");
    return result;
  } else {
    return null;
  }
}

// 删除
// 功能：删除指定键。
// 参数：
//   键
// 返回值：
//   无

function removeCookie(key, path = "/") {
  saveCookie(key, "byebye", -1, path);
}
